iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Software Development

從零開始!使用chatGPT製作Unity回合制卡牌遊戲系列 第 20

從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 20 - 更多Unity Debug功能!

  • 分享至 

  • xImage
  •  

嗨!
上一期我們說了Unity Debug.Log的一些特性還有他和print的不同。
今天我們要繼續講Unity的Debug系統有什麼好料的可以來挖。
我們繼續上次的內容。


使用Error Message來做Break point中斷點

我們上次介紹了Debug.Log可以分成很多種來做出等級區分。
除了方便快速分類,其實還能用來設定中斷點。

我們更改上次的程式碼:

public void SequentialChangeGameState()
    {
        switch (currentState)
        {
            case GameState.MainMenu:
                currentState = GameState.SelectGameMode;
                // Handle logic for the main menu state
                break;
            case GameState.SelectGameMode:
                currentState = GameState.Playing;
                // Handle logic for the selecting game mode state
                Debug.LogWarning("This is a basic warning message");
                // here
                break;
            case GameState.Playing:
                currentState = GameState.GameOver;
                // Handle logic for the playing state
                Debug.LogError("This is a basic error message");
                // and here
                break;
            case GameState.GameOver:
                currentState = GameState.MainMenu;
                // Handle logic for the game over state
                break;
                // Add more cases as needed
        }
        GameStateChanged = true;
    }

我們將警告Debug.LogWarning以及錯誤訊息Debug.LogError,
搬到續向遊戲模式切換程式SequentialChangeGameState()內。
然後在Unity編輯器內點按Console,Error Pause。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235YSZWPdaiiC.png

第一次進入,將會是遊戲選單,不暫停。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235KckOU7fly7.png

第一次點擊按鈕。遊戲選單狀態改為SelectGameMode。
https://ithelp.ithome.com.tw/upload/images/20231004/201632351oi5zptAWK.png
一般的Log被輸出了。
這是我們在Update()中撰寫用來顯示當前狀態的。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235WVJldceWyW.png

第二次點擊按鈕。遊戲選單狀態改為Playing。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235phHnVETl0g.png

Debug.LogWarning("This is a basic warning message");

會被觸發。所以除了顯示當前遊戲選單狀態為Playing,還會顯示LogWarning。

第三次點擊按鈕。遊戲選單狀態改為GameOver。
此時,遊戲會被暫停,因為錯誤發生了。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235JPjB16TgWH.png

像這種中斷方式,可以在Log中仔細說明是哪種錯誤。
因為是小錯所以是警告,或因為是某種大錯所以暫停程式,並詳細說明錯誤原因。


對,如果我只是想停下來,一、步、一、步、看,這樣呢?
那我們可以用Debug.Break。

Debug.Break();

就是這樣。

所以我們試試看在GameOver狀態加上這段。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235rWfnAnZgGH.png

然後運行。
https://ithelp.ithome.com.tw/upload/images/20231004/20163235c2IKYIA3Ng.png

可以看到他一跑到GameOver狀態自己停止了。
「好欸!」

最後,還有一種可以不用手動刻出條件,內建接受布林值的函式。

Debug.Assert(GameModeChanged, "The Game Mode has been changed");

這樣就不用弄一堆巢狀結構來打破程式碼的結構性啦!


上一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 19 - Unity Debug.Log
下一篇
從零開始!使用chatGPT製作Unity回合制卡牌遊戲 Day 21 - 計劃整頓:遊戲系統與菜單
系列文
從零開始!使用chatGPT製作Unity回合制卡牌遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言